// 资源控制层：处理请求与发出响应。

// 引入Model层
const { addOrders,delOrder,updateOrder,queryOrders } = require('../models/order')
// TODO：参数校验

class ordersCtl{
    // 获取订单列表
    async getOrdersList(ctx){
        console.log(ctx.state.user)
        // 解构赋值获取查询条件
        let { query_value,limitNumber,skipNumber,field,orderType } = ctx.request.query
        // 查询条件
        let queryObj = {}
        limitNumber = parseInt(limitNumber)
        skipNumber = parseInt(skipNumber)
        const queryInfo = {
            limitNumber : limitNumber,
            skipNumber : skipNumber,
            field : field,
            orderType : orderType
        }
        let getResult = {}
        // 如果没有值，则查询所有数据
        if(query_value === ''){
            queryObj = {
                isDeleted : false
            }
            getResult = await queryOrders(queryObj,queryInfo,{
                isDeleted:false
            })
        }else{
            queryObj = {
                order_number : query_value,
                isDeleted : false
            }
            getResult = await queryOrders(queryObj,queryInfo,{
                isDeleted:false
            })
        }
        ctx.body = {
            data : getResult,
            message : '获取资源列表成功',
            status : 200
        }
    }
    // 新增订单信息
    async createOrder(ctx){
        // 校验post参数
        ctx.verifyParams({
            order_number:{ type: 'string' , required: true },
            order_resources:{type: 'array' , required:true },
            order_resources_name:{type: 'array' , required:true }
        })
        // 解构赋值获取产品名和资源的网盘链接
        const { order_number,order_resources,order_resources_name } = ctx.request.body
        // 新建一个对象，存储全部信息
        const orderInfo = {
            order_number : order_number,
            order_resources : order_resources,
            order_resources_name : order_resources_name,
            isDeleted:false,
            order_update_time : new Date()
        }
        // 存储到数据库中
        const addOrderResult = await addOrders(orderInfo)
        ctx.body = {
            data : addOrderResult,
            message : '新增资源成功！',
            status : 200
        }
    }
    // 修改订单信息
    async updateOrder(ctx){
        // 获取资源对应Id
        const { id } = ctx.params
        // 校验请求体参数
        ctx.verifyParams({
            order_number:{ type: 'string' , required: true },
            order_resources:{type: 'array' , required:true },
            order_resources_name:{type: 'array' , required:true }
        })
        // 解构赋值获取产品名和资源的网盘链接
        const { order_number,order_resources,order_resources_name } = ctx.request.body
        const updateInfo = {
            order_number : order_number,
            order_resources : order_resources,
            order_resources_name : order_resources_name,
            order_update_time : new Date()
        }
        // 调用修改方法，修改资源
        const updateOrderResult = await updateOrder(id,updateInfo)
        ctx.body = {
            updatedNumber : updateOrderResult,
            message : '修改资源信息成功',
            status : 200
        }
    }
    // 删除订单信息
    async deleteOrder(ctx){
        if(ctx.state.user.role > 0){
            ctx.body = {
                message : "删除失败，当前用户权限不足",
                status : 403
            }
        }else{
            // 获取资源对应Id
            const { id } = ctx.params
            // 调用资源删除方法，删除资源
            const deleteOrderResult = await delOrder(id)
            ctx.body = {
                data : deleteOrderResult,
                message : '删除资源信息成功',
                status : 200
            }
        }
    }
}

// 导出订单控制器对象（实例化ordersCtl类）。
module.exports = new ordersCtl();